<?php
/*******************************************************************************

    FinalsClub.org is a platform for students and faculty to collaborate
    and share their knowledge with the world.

    Copyright (C) 2009  Andrew Magliozzi
 
    This file is a part of FinalsClub.org.

    FinalsClub.org is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
    To contact FinalsClub.org, send an email to info@finalsclub.org, or
    send mail to Finals Club, c/o Veritas Tutors, 1132 Massachusetts Avenue,
    Cambridge, MA 02138.

*******************************************************************************/

class SubjectPeer extends BaseSubjectPeer {
	
	/**
	 * Retrieves all subjects for a given network id
	 * @param $network_id
	 * @return an array of Subject objects
	 */
	public static function retrieveByNetworkId($network_id) {
		$c = new Criteria();
		$c->add(SubjectPeer::NETWORK_ID, $network_id);
		return SubjectPeer::doSelect($c);
	}
	
	public static function retrievePager($page = 1, $per_page = 20, $network_id = null) {
		$c = new Criteria();		
		if($network_id) {
			$c->add(SubjectPeer::NETWORK_ID, $network_id);
		}
		
		$pager = new sfPropelPager('Subject', $per_page);
		$pager->setPeerMethod('doSelect');
		$pager->setCriteria($c);
		$pager->setPage($page);
		$pager->init();
		
		return $pager;
	}


	public static function retrieveByNotesPager($page = 1, $per_page = 20, $network_id = null) {
		$c = new Criteria();		
		if($network_id) {
			$c->add(SubjectPeer::NETWORK_ID, $network_id);
		}
		$c->addJoin(CoursePeer::SUBJECT_ID, SubjectPeer::ID);
		$c->addJoin(CoursePeer::ID, NotePeer::COURSE_ID);
		$c->add(NotePeer::TEXT, null, Criteria::ISNOTNULL);
		$c->add(NotePeer::VISIBILITY, NotePeer::EVERYONE);

		$c->addGroupByColumn(SubjectPeer::ID);	
		$pager = new sfPropelPager('Subject', $per_page);
		$pager->setPeerMethod('doSelect');
		$pager->setCriteria($c);
		$pager->setPage($page);
		$pager->init();
		
		return $pager;
	}
	
	public static function retrieveAll() {
		$c = new Criteria();		
		$c->addAscendingOrderByColumn(SubjectPeer::NAME);
		return SubjectPeer::doSelect($c);
	}
	
	public static function retrieveById($id) {
		return SubjectPeer::retrieveByPK($id);
	}
	
}
